export const getURLByParm = (url, params) => {
  try {
     // 创建一个 URL 对象
     const parsedUrl = new URL(url);

     // 使用 URLSearchParams 获取查询参数
     const queryParams = new URLSearchParams(parsedUrl.search);
 
     // 获取 pwd 参数的值
     const paramsVal = queryParams.get(params);
 
     console.log(paramsVal); // 输出: 94rx
     return paramsVal

  } catch(err) {
    console.log(err)
  }
}

export function renameSubToChildren(node) {
    // 检查当前节点是否有 'sub' 属性
    try{
      if (node.subs) {
        // 重命名 'sub' 为 'children'
        node.children = node.subs;
        delete node.subs; // 删除旧的 'sub' 属性
      }
    
      // 如果当前节点有 'children' 属性，递归调用该函数
      if (node.children && Array.isArray(node.children)) {
        node.children.forEach(renameSubToChildren);
      }

    } catch(err) {
      console.log(err)
    }
   
  }


export function transformData(data) {
  try {
    const result = {};
    data?.forEach(item => {
        if (item.is_dir) {
          // result[item.id] = item.subs ? transformData(item.subs) : {};
          result[item.name] = item.children ? transformData(item.children) : {};
        } else {
          result[item.id] = {
            "type": "file",
            "id": item.id,
            "buid": item.buid,
            "fileName": item.name
          };
        }
    });
    return result;

  } catch(err) {
   console.log(err)
  }
}


export const sleep = (seconds) => {
  const milliseconds = seconds * 1000;
  return new Promise(resolve => setTimeout(resolve, milliseconds));
};
  
// 跟进名称查找树结构的节点
export function findNodeByName(nodeName, tree) {
    // 定义一个数组来存储遍历的结果
    const result = [];
    try {
      // 从根节点开始遍历
      traverse(tree);
        
      // 返回找到的所有匹配节点
      return result;
     } catch (e) {
      console.log(e)
    }
  
    // 定义递归函数
    function traverse(nodes) {
      nodes.forEach(node => {
        if (node.name === nodeName) {
          // 如果找到匹配的节点，将其添加到结果数组中
          result.push(node);
        }
        // 如果当前节点有子节点，递归调用遍历子节点
        if (node.children) {
          traverse(node.children);
        }
      });
    }
  
   
  }


  // 定义一个函数来转换文件大小并保留两位小数
export function formatFileSize(sizeInBytes) {
    const units = ['B', 'KB', 'MB', 'GB', 'TB'];
    let size = sizeInBytes;
    let unitIndex = 0;
  
    while (size >= 1024 && unitIndex < units.length - 1) {
        size /= 1024;
        unitIndex++;
    }
  
    return `${size.toFixed(2)} ${units[unitIndex]}`;
  }